// 版权所有2016 etcd作者
// 
// 根据Apache许可证2.0版（以下简称“许可证”）获得许可；
// 除非遵守许可证，否则不得使用此文件。
// 您可以通过
// 
// www.apache.org/licenses/LICENSE-2.0 
// 
// 除非适用法律要求或书面同意，否则根据许可证分发的软件
// 按“原样”分发，
// 无任何明示或暗示的保证或条件。
// 请参阅许可证，了解管理许可的特定语言和
// 许可证下的限制。

package api

import (
	"go.etcd.io/etcd/client/pkg/v3/types"
	"go.etcd.io/etcd/server/v3/etcdserver/api/membership"

	"github.com/coreos/go-semver/semver"
)

// 集群是一个接口，表示一个etcd集群中的成员集合。
type Cluster interface {
	// ID返回群集ID 
	ID() types.ID
	// ClientURLs返回此
	// 群集正在侦听客户端请求的所有URL的集合
	ClientURLs() []string
	// 成员返回按其ID排序的成员片段
	Members() []*membership.Member
	// 成员根据ID检索特定成员，如果集群中不存在
	// 成员，则为零
	Member(id types.ID) *membership.Member
	// 版本是集群范围内的最小主版本。次要版本。
	Version() *semver.Version
}
